﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace TorneoLoL
{
    public partial class FormPartidas : Form
    {
        Conexion conexion = new Conexion();
        DataSet ds;
        String ConsultaSQL;

        public FormPartidas()
        {
            this.Text = "Partidas";
            this.FormBorderStyle = FormBorderStyle.None;            
            InitializeComponent();
        }

        private void FormPartidas_Load(object sender, EventArgs e)
        {
            ds = new DataSet();
            ConsultaSQL = "select P_idPartida as[Código], P_Fase as[Fase], P_CantEncJugados as[Encuentros jugados], P_Fecha as[Fecha] from Partidas";
            conexion.consultarDataSet( ref ds, "Partidas", ConsultaSQL );
            grdPartidas.DataSource = ds.Tables["Partidas"];

            ConsultaSQL = "select Encuentros.E_IdPartida as[Código partida], "+
                "Encuentros.E_IdEncuentro as[Código encuentro], Encuentros.E_NEncuentro as[Número encuentro], " +
                "Teams.T_NombreTeam as[Ganador] from Encuentros inner join Teams " +
                "on Encuentros.E_idGanador = Teams.T_IdTeam";
            conexion.consultarDataSet( ref ds, "Encuentros", ConsultaSQL );
            grdEncuentros.DataSource = ds.Tables["Encuentros"];
            iniciarControles();
        }
        
        private void iniciarControles()
        {
            CargarComboNumerico(ref cmbIdPartida);
            CargarComboTexto(ref cmbAcronTeam);
            CargarComboTexto(ref cmbFase);

        }

        private void CargarComboTexto(ref ComboBox NombreCombo)
        {
            NombreCombo.Items.Add("");
            NombreCombo.Items.Add("Comienza con:");
            NombreCombo.Items.Add("Termina en:");
            NombreCombo.Items.Add("Contiene:");
            NombreCombo.Items.Add("Es igual a:");
        }
        
        private void CargarComboNumerico(ref ComboBox NombreCombo)
        {
            NombreCombo.Items.Add("");
            NombreCombo.Items.Add("Igual a:");
            NombreCombo.Items.Add("Mayor a:");
            NombreCombo.Items.Add("Menor a:");
        }

        private void btnFiltrar_Click( object sender, EventArgs e )
        {
            grdPartidas.DataSource = null;
            ds = new DataSet();
            ConsultaSQL = "select P_idPartida as[Código], P_Fase as[Fase], P_CantEncJugados as[Encuentros jugados], P_Fecha as[Fecha] from Partidas ";

            if(cmbAcronTeam.Text != String.Empty && cmbAcronTeam.FindString( cmbAcronTeam.Text ) != -1 && txtATeam.Text != String.Empty)
            {
                ConsultaSQL += "inner join TeamxPartidas on TeamxPartidas.TxP_IdPartida = Partidas.P_idPartida " +
                    "inner join Teams on Teams.T_idTeam = TeamxPartidas.TxP_idTeam where ";

                switch(cmbAcronTeam.Text)
                {
                    case "Comienza con:":
                        ConsultaSQL += "T_NombreTeam like '" + txtATeam.Text.ToString() + "%'";
                        break;

                    case "Termina en:":
                        ConsultaSQL += "T_NombreTeam like '%" + txtATeam.Text.ToString() + "'";
                        break;

                    case "Contiene:":
                        ConsultaSQL += "T_NombreTeam like '%" + txtATeam.Text.ToString() + "%'";
                        break;

                    case "Es igual a:":
                        ConsultaSQL += "T_NombreTeam = '" + txtATeam.Text.ToString() + "'";
                        break;
                }
            }

            if(cmbIdPartida.Text != String.Empty && cmbIdPartida.FindString( cmbIdPartida.Text ) != -1 && txtIdPartida.Text != String.Empty)
            {
                if(ConsultaSQL != "select P_idPartida as[Código], P_Fase as[Fase], P_CantEncJugados as[Encuentros jugados], P_Fecha as[Fecha] from Partidas ")
                    ConsultaSQL += " and ";
                else
                    ConsultaSQL += "where ";
                switch(cmbIdPartida.Text)
                {
                    case "Igual a:":
                        ConsultaSQL += "P_idPartida  = " + txtIdPartida.Text.ToString();
                        break;

                    case "Mayor a:":
                        ConsultaSQL += "P_idPartida  > " + txtIdPartida.Text.ToString();
                        break;

                    case "Menor a:":
                        ConsultaSQL += "P_idPartida  < " + txtIdPartida.Text.ToString();
                        break;
                }
            }

            if(cmbFase.Text != String.Empty && cmbFase.FindString( cmbFase.Text ) != -1 && txtTFase.Text != String.Empty)
            {
                if(ConsultaSQL != "select P_idPartida as[Código], P_Fase as[Fase], P_CantEncJugados as[Encuentros jugados], P_Fecha as[Fecha] from Partidas ")
                    ConsultaSQL += " and ";
                else
                    ConsultaSQL += "where ";
                switch(cmbFase.Text)
                {
                    case "Comienza con:":
                        ConsultaSQL += "P_Fase  like '" + txtTFase.Text.ToString() + "%'";
                        break;

                    case "Termina en:":
                        ConsultaSQL += "P_Fase  like '%" + txtTFase.Text.ToString() + "'";
                        break;

                    case "Contiene:":
                        ConsultaSQL += "P_Fase  like '%" + txtTFase.Text.ToString() + "%'";
                        break;

                    case "Es igual a:":
                        ConsultaSQL += "P_Fase  = '" + txtTFase.Text.ToString() + "'";
                        break;
                }
            }

            conexion.consultarDataSet( ref ds, "Partidas", ConsultaSQL );
            grdPartidas.DataSource = ds.Tables["Partidas"];

        }

        private void btnQuitarFiltro_Click( object sender, EventArgs e )
        {
            ds = new DataSet();
            ConsultaSQL = "select P_idPartida as[Código], P_Fase as[Fase], P_CantEncJugados as[Encuentros jugados], P_Fecha as[Fecha] from Partidas ";
            conexion.consultarDataSet( ref ds, "Partidas", ConsultaSQL );
            grdPartidas.DataSource = ds.Tables["Partidas"];
        }

        private void grdPartidas_RowHeaderMouseClick( object sender, DataGridViewCellMouseEventArgs e )
        {
            if(grdPartidas[0, grdPartidas.CurrentRow.Index].Value.ToString() != String.Empty)
            {
                ds = new DataSet();
                ConsultaSQL = "select Encuentros.E_IdPartida as[Código partida], "+
                    "Encuentros.E_IdEncuentro as[Código encuentro], Encuentros.E_NEncuentro as[Número encuentro], " +
                    "Teams.T_NombreTeam as[Ganador] from Encuentros inner join Teams " +
                    "on Encuentros.E_idGanador = Teams.T_IdTeam " +
                    "inner join Partidas on Encuentros.E_IdPartida = Partidas.P_idPartida where Partidas.P_idPartida = " +
                    grdPartidas["Código", grdPartidas.CurrentRow.Index].Value.ToString();
                conexion.consultarDataSet( ref ds, "Encuentros", ConsultaSQL );
                grdEncuentros.DataSource = ds.Tables["Encuentros"];
            }

        }
    }
}
